package com.miao;


import com.miao.config.JavaConfig6;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;


/**
* Description:  Bean 生命周期 全流程打印
* Author: Miao@ShaoQing
* Data: 9:36 2021/7/5
*/
public class MyTest03 {


    /**
     * Description:  生命周期流程打印 演示
     *
     *  - 创建容器
     *  - 实例化Bean
     *  - 属性注入
     *  - BeanNameAware接口：setBeanName()方法
     *  - BeanFactoryAware接口：setBeanFactory()方法
     *  - ApplicationContextAware接口：setApplicationContext()方法
     *  - BeanPostProcessor接口:前置处理 postProcessBeforeInitialization
     *  - InitializingBean接口：afterPropertiesSet()方法
     *  - 自定义初始化方法
     *  - BeanPostProcessor接口:后置处理postProcessAfterInitialization
     *  - 使用
     *  - 销毁容器
     *  - DisposableBean接口：destroy()方法
     *  - 自定义销毁方法
     *
     *
     * Author: Miao@ShaoQing
     * Data: 10:54 2021/3/31
     */
    @Test
    public void test1() {

        System.out.println("\nBean生命周期流程打印:");
        System.out.println("==》容器创建！");
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(JavaConfig6.class);

        //使用Bean
        Object bean = applicationContext.getBean("food");
        System.out.println("==》Bean使用中: " + bean.toString());

        //关闭容器
        System.out.println("==》开始销毁容器！");
        applicationContext.close();
    }
}
